#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
 
using namespace std;

int main()
{
    signal(2,SIG_IGN);
    signal(2,SIG_DFL);

    while(1)
    {
        cout<<"hello signal"<<endl;
        sleep(1);
    }

    // // core  -- ulimit -a
    // pid_t id = fork();
    // if(id == 0)
    // {
    //     //child
    //     int cnt = 500;
    //     while(cnt)
    //     {
    //         cout <<"I am a child process, pid: "<< getpid()<<" cnt: "<<cnt<<endl;
    //         sleep(1);
    //         cnt--;
    //     }

    //     exit(0);
    // }

    // //father
    // int status = 0;
    // pid_t rid = waitpid(id,&status,0);
    // if(rid == id)
    // {
    //     cout<<"child quit info, rid: "<<rid<<"exit code: "<<((status>>8)&0xFF)
    //     <<"exit signal: "<<(status&0x7FF)<<"core dump: "<<((status>>7)&1)<<endl;
    // }

    return 0;
}











// // 信号为什么会被一直触发？？
// void handler(int signo)
// {
//     cout << "...get a sig, number: " << signo << endl;
//     // exit(1);
//     int n = alarm(5);
//     cout << "剩余时间：" << n << endl;
// }

// void MySleep(int n)
// {
// }

// int main()
// {
//     signal(14, handler);
//     int n = alarm(5);
//     while (1)
//     {
//         cout << "proc is running..." << endl;
//         sleep(1);
//     }

//     // signal(SIGFPE,handler);
//     // cout<<"div befor"<<endl;

//     // sleep(5);
//     // //int a = 10;
//     // // a /= 0;//异常
//     // cout<<"div after"<<endl;
//     // sleep(1);

//     return 0;
// }